// 简述symbol类型的用途

/**
 * symbol类型是es6引入的一种新的原始数据类型，他代表了独一无二的值
 * 通过调用Symbol函数来产生一个独一无二的值，而不是new
 *
 * let s = Symbol()
 *
 * Symbol 可以接收一个字符串作为参数，来作为Symbol实例的描述
 *
 * let s = Symbol('describe')
 *
 * symbol也可以作为对象的属性名，来保证不会出现同名的属性，并且，该属性名不会出现再循环中，
 * 也不会被Object.keys()，Object.getOwnPrototypeNames()，JSON.stringify()返回，但是他也
 * 不是私有属性，有一个Object.getOwnPropertySymbols方法，可以获取指定对象的所有 Symbol 属性名。
 *
 * let a = {
 *    [Symbol()]: 'value'
 * }
 */